package com.own.component.util.excel.util.write.method;

import com.own.component.util.excel.util.write.method.base.BaseMetaData;
import com.own.component.util.excel.util.write.model.Freeze;
import com.own.component.util.excel.util.write.record.ExcelRecord;

/**
 * BaseFreezeMethod
 *
 * @author chenxueli
 * @date 2022-06-15 03:14:15
 */
public interface BaseFreezeMethod extends BaseMetaData {

    /**
     * 冻结窗口
     *
     * @param colSplit 要冻结的列数
     * @param rowSplit 要冻结的行数（只冻结列为0）
     * @return 表格对象
     */
    default ExcelRecord freeze(int colSplit, int rowSplit) {
        return freeze(colSplit, rowSplit, colSplit, rowSplit);
    }

    /**
     * 冻结窗口
     *
     * @param colSplit       要冻结的列数
     * @param rowSplit       要冻结的行数（只冻结列为0）
     * @param leftMostColumn 右边区域可见的首列序号，从1开始计算
     * @param topRow         下边区域可见的首行序号，也是从1开始计算，这里是冻结列，所以为0
     * @return 表格对象
     */
    default ExcelRecord freeze(int colSplit, int rowSplit, int leftMostColumn, int topRow) {
        sheet().setFreeze(new Freeze(colSplit, rowSplit, leftMostColumn, topRow));
        return excel();
    }

    /**
     * 取消冻结窗口
     *
     * @return 表格对象
     */
    default ExcelRecord cancelFreeze() {
        sheet().setFreeze(null);
        return excel();
    }

}
